#!/bin/python3

"""
1. 如何为函数定义keyword-only参数（写出个例子即可）？
在形参定义时，在一个*之后，或一个可变位置参数之后，出现的普通参数，就已经不是普通参数了，被称为keywork-only参数。
keyword-only参数，这个参数必须采用关键字传参。
def fn(*args,x,y,**kwards):
	print(x,y,args,kwards,sep='\n',end='\n\n')

fn(y=6,x=7,a=1)
fn(21,2,x=1) #报错，少一个关键字传参
fn(12,213) #报错，少两个关键字传参

def fn(*,x,y):
	print(x,y)
fn(x=6,y=7)
*后面所有的普通参数都成了keyword-only参数
def fn(x,y):
	print(x,y)
fn(321,y=1)

2. 什么是LEGB，请解释
LEGB是Python中一个用于解析变量作用域的规则，它是一个缩写，代表了Python中四种不同的作用域。
	L：local（内部函数变量），局部作用域是指在函数内部定义的变量。这些变量只能在函数内部访问。
	E：Enclosing（外部函数变量），封闭作用域是指在一个嵌套的函数中定义的变量。这些变量可以在内部函数和外部函数中访问。
	G：Global（全局），全局作用域是指在模块中定义的变量。这些变量可以在模块的任何地方访问（不建议使用）
	B：Built-in（内置），内置作用域是指Python解释器中预定义变量和函数。这些变量和函数可以在任何地方访问。
在Python中，当我们引用一个变量时，解释器会按照LEGB的顺序来查找变量的定义。首先查找局部作用域，然后是封闭作用域，接着是



4. 使用本周学习的技术改造第一周的计算器实现，其目标如下：
   1. 运行后提示让用户输入一个数字
   2. 提示输入操作符（+ - * /）
   3. 再次提示输入一个数字
   4. 打印计算结果
   5. 在不退出程序的前提下，可以允许用户继续输入新一组数据计
   6. 尽可能改善用户体验（新需求）
"""


def calculator():
	while True:	
		print("这是一个简单计算器,输入q或者quit退出")
		num1 = float(input("请输入第一个数字: "))
		expr = input("请输入: + - * / ")
		num2 = float(input("请输入第二个数字: "))
		if num1 == 'q' or num1 == 'quit' or expr == 'q' or expr == 'quit' or num2 == 'q' or num2 == 'quit':
			break
		elif expr == '+':
		    result = num1 + num2
		elif expr == '-':
		    result = num1 - num2
		elif expr == '*':
		    result = num1 * num2
		elif expr == '/':
		    result = num1 / num2 
		else:
		    print(f'请输入正确的操作符')
		print(f'计算结果: ',result,f'\n')

        
calculator()

